package TankGame;

// 这段代码通过 GameSaver 类的静态方法 saveGame 使用 Java 的序列化机制，
// 将游戏状态（包括玩家坦克、敌方坦克、子弹、障碍物、玩家生命值和暂停状态）保存到指定文件中，
// 并使用 try-with-resources 确保资源正确关闭，
// 同时捕获并处理可能的 I/O 异常

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.List;

public class GameSaver {
    // 保存游戏状态到指定文件。
    // gamePanel 包含游戏状态的 GamePanel 对象。
    // filePath  保存游戏状态的文件路径。
    public static void saveGame(GamePanel gamePanel, String filePath) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath))) {
            // 序列化玩家坦克对象并写入文件
            oos.writeObject(gamePanel.playerTank);
            // 序列化敌方坦克列表并写入文件
            oos.writeObject(gamePanel.enemyTanks);
            // 序列化子弹列表并写入文件
            oos.writeObject(gamePanel.bullets);
            // 序列化障碍物列表并写入文件
            oos.writeObject(gamePanel.obstacles);
            // 写入玩家坦克的生命值
            oos.writeInt(gamePanel.playerTank.getHealth());
            // 写入游戏是否暂停的状态
            oos.writeBoolean(gamePanel.isPaused);
            // 打印成功保存游戏状态的消息
            System.out.println("Game state saved successfully.");
        } catch (IOException e) {
            // 捕获并打印 I/O 异常的堆栈跟踪信息
            e.printStackTrace();
        }
    }
}
